/**
  ******************************************************************************
  * @file    basement.h
  * @author  dragonchern
  * @version V1.0.0
  * @date    09-15-2016
  * @brief   用户自定义
  ******************************************************************************
  *
  * <h2><center>&copy; COPYRIGHT 2016 上海今中网络科技有限公司 </center></h2>
  ******************************************************************************
  */

#ifndef __BASEMENT__H__
#define __BASEMENT__H__

#include <time.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <stdarg.h>
#include <signal.h>

/// 是否允许调试
#define ENABLE_DEBUG
//#undef  ENABLE_DEBUG

/// 是否开启证书认证
/*请查找相对应的宏*/
#define ENABLE_NO_CERT //可以不用证书验证
//#undef  ENABLE_NO_CERT

#define ENABLE_SSL

/// OS TYPE
#define USE_LINUX
#ifdef  USE_LINUX
#include <unistd.h>
#include <sys/sem.h>
#include <sys/stat.h>
#else
#endif

/// BOOL类型
typedef enum
{
    FALSE = 0,
    TRUE  = !FALSE
} BOOL;

typedef enum _result_t
{
    SUCCESS = 0,
    FAILURE = 1,
} RESULT_T;

#define Size(x)             (sizeof(x)/sizeof(x[0]))
#define BoolCast(x)         ((x) ? TRUE : FALSE)
#define ZeroMemory(a, b)	memset((a), 0, (b))

/// 比较两个字符串是否相等
#define streql	            !strcmp
#define strieql             !strcasecmp
#define strneql             !strncmp
#define strnieql            !strncasecmp

/// 控制台输入输出重定义
#define ConsoleRead         scanf
#define ConsoleWrite        printf
#define ConsoleInput        ConsoleRead
#define ConsoleOutput       ConsoleWrite

/// 用户自定义
#define CR                  "\n"
#define LF                  "\r"
#define CRLF                "\r\n"
#define CloseSocket         close
#define CloseFile           close
#define RETURN_FAILURE      -1
#define RETURN_SUCCESS      0

/******************************* 软件相关控制 *************************/
#define SERVER_NAME         "vpnserver"                         // 根据实际需要修改
#define SERVER_KEY_PATH     "/sonicom"                          // KEY路径
#define SERVER_BASEPATH     "/sonicom/conf/vpn/conf/"           // 基路径
#define SERVER_CNF_PTPT	    SERVER_BASEPATH		                // 配置文件父路径
#define SERVER_DFT_CNF_PATH SERVER_CNF_PTPT SERVER_NAME ".conf" // 默认配置文件路径
#define SERVER_CNF_PATH	    ConfigPath                          // 系统配置文件路径(根据实际需要修改)
#define SERVER_SIGNAL_PATH  SERVER_NAME ".sig"                  // 信号路径
#define SERVER_WORKER_PID   SERVER_NAME ".w.pid"                // 工作pid
#define SERVER_LOG_BUFLEN   1024                                // 日志buffer长度
#define server_main         main

///****************patched by xiaohu mod************2016/03/18*******
///note:这两个宏没有用，现在改成用配置文件了，配置文件中也包含了最大的记录数
#define LOG_ZD_BASE         SERVER_KEY_PATH "/conf"             //
#define LOG_ZD_DB           LOG_ZD_BASE "zdLog.db"              //日志数据库,格式大多与syslog兼容

///****************patched by yagamishi add*************2016/01/28*****s545dfds4234fdf**
///note:由于配置文件的不同，所以和后三种有所区分，而不是按照平台来区分
#define CHECK_PRE_PROC_WIN_PATH     SERVER_BASEPATH     "processsend.conf"              //windows登陆前进程加固，按进程判断是否启动
#define CHECK_PRE_TYPE_AND_PATH     SERVER_BASEPATH     "androidtypesend.conf"          //android登陆前手机加固，按手机型号判断是否启动
#define CHECK_RUN_PROC_WIN_PATH     SERVER_BASEPATH     "checkrunningsend.conf"         //windows登陆后进程加固，检查正在运行的东西是否符合规则

#define CHECK_RUN_WIN_PATH          SERVER_BASEPATH     "checkrunningswitch.conf"      //windows运行中检查，注意和前面的区分
#define CHECK_PRE_AND_PATH          SERVER_BASEPATH     "adcheckswitch.conf"           //android前检查，主要检查是否root,wifi
#define CHECK_RUN_AND_PATH          SERVER_BASEPATH     "adcheckrunningswitch.conf"    //android运行中检查，是否share,bluetooth...
///*********************************************************************s545dfds4234fdf**

///****************patched by yagamishi add*************2016/02/26*******
#define SERVER_ANDROID_DOOR_CNF     SERVER_BASEPATH     "androidtypedoorsend.conf"     //android后门
///*********************************************************************


#endif///#ifndef __BASEMENT__H__

/******************* (C) COPYRIGHT 2016 上海今中网络科技有限公司 *****END OF FILE****/





